import jsonp from 'jsonp'
import { request } from '../utils/request'
import { message } from 'antd'

//获取一级/二级分类列表
export function reqCategory (parentId) {
  return request({
    url: '/manage/category/list',
    method: 'get',
    params: {
      parentId: parentId
    }
  })
}

//添加分类
export function reqAddCategory (addData) {
  return request({
    url: '/manage/category/add',
    method: 'post',
    data: addData
  })
}

//更新分类
export function reqUpdateCategory (updateData) {
  return request({
    url: '/manage/category/update',
    method: 'post',
    data: updateData
  })
}

//获取商品分页列表
export function reqProduct (pageNum, pageSize) {
  return request({
    url: '/manage/product/list',
    method: 'get',
    params: {
      pageNum: pageNum,
      pageSize: pageSize
    }
  })
}

//搜索商品分页列表
/* 
searchType: 搜索类型productName/productDesc
*/
export function searchProduct (pageNum, pageSize, searchName, searchType) {
  return request({
    url: '/manage/product/search',
    method: 'get',
    params: {
      pageNum: pageNum,
      pageSize: pageSize,
      [searchType]: searchName
    }
  })
}

//根据分类id获取分类名称
export function reqCategoryName (categoryId) {
  return request({
    url: '/manage/category/info',
    method: 'get',
    params: {
      categoryId: categoryId
    }
  })
}

//对商品进行上架/下架处理
export function reqUpdateStatus (statusData) {
  return request({
    url: '/manage/product/updateStatus',
    method: 'post',
    data: statusData
  })
}

//删除上传的图片
export function reqDeleteImg (name) {
  return request({
    url: '/manage/img/delete',
    method: 'post',
    data: name
  })
}

//添加或更新商品
export function reqAddOrUpdateProduct (productMsg) {
  return request({
    url: '/manage/product/' + (productMsg._id ? 'update' : 'add'),
    method: 'post',
    data: productMsg
  })
}

//更新商品
// export function reqUpdateProduct (productMsg) {
//   return request({
//     url: '/manage/product/update',
//     method: 'post',
//     data: productMsg
//   })
// }

//获取所有角色列表
export function reqRoles () {
  return request({
    url: '/manage/role/list',
    method: 'get'
  })
}

//添加角色
export function reqAddRole (roleName) {
  return request({
    url: '/manage/role/add',
    method: 'post',
    data: roleName
  })
}

//更新角色
export function reqUpdateRole (authData) {
  return request({
    url: "/manage/role/update",
    method: 'post',
    data: authData
  })
}

//获取所有用户
export function reqGetAllUsers () {
  return request({
    url: '/manage/user/list',
    method: 'get',
  })
}

//添加或更新用户
export function reqAddOrUpdateUser (userMsg) {
  return request({
    url: '/manage/user/' + (userMsg._id ? 'update' : 'add'),
    method: 'post',
    data: userMsg
  })
}

//删除用户
export function reqDeleteUser (userMsg) {
  return request({
    url: '/manage/user/delete',
    method: 'post',
    data: userMsg
  })
}



/*
jsonp请求的接口请求函数
 */
export const reqWeather = () => {

  return new Promise((resolve, reject) => {
    const url = 'https://wis.qq.com/weather/common?source=pc&weather_type=observe|forecast_24h|air&province=陕西省&city=西安市&county=雁塔区'
    // 发送jsonp请求
    jsonp(url, {}, (err, data) => {
      console.log('jsonp()', err, data)
      // 如果成功了
      if (!err && data.status === 200) {
        // 取出需要的数据
        const weather = data.data.observe.weather
        resolve(weather)
      } else {
        // 如果失败了
        message.error('获取天气信息失败!')
      }

    })
  })
}
reqWeather()
/*
jsonp解决ajax跨域的原理
  1). jsonp只能解决GET类型的ajax请求跨域问题
  2). jsonp请求不是ajax请求, 而是一般的get请求
  3). 基本原理
   浏览器端:
      动态生成<script>来请求后台接口(src就是接口的url)
      定义好用于接收响应数据的函数(fn), 并将函数名通过请求参数提交给后台(如: callback=fn)
   服务器端:
      接收到请求处理产生结果数据后, 返回一个函数调用的js代码, 并将结果数据作为实参传入函数调用
   浏览器端:
      收到响应自动执行函数调用的js代码, 也就执行了提前定义好的回调函数, 并得到了需要的结果数据
 */